package a05_ThreadInstance;

/**
 * @Author quan
 * @Description 多线程环境下线程不安全的现象
 * @Date 2023/5/10 15:37
 */
public class SingletonLazyTest {
    public static void main(String[] args) {
        //单线程环境下没有问题
//        SingletonLazy singletonLazy01 = SingletonLazy.getInstance();
//        SingletonLazy singletonLazy02 = SingletonLazy.getInstance();
//        SingletonLazy singletonLazy03 = SingletonLazy.getInstance();
//        System.out.println(singletonLazy01);
//        System.out.println(singletonLazy02);
//        System.out.println(singletonLazy03);
        //多线程环境下
//        for (int i = 0; i < 10; i++) {
//            //创建多个线程并获取实例对象
//            Thread thread = new Thread(()->{
//                //获取单例对象并打印
//                SingletonLazy singletonLazy = SingletonLazy.getInstance();
//                System.out.println(singletonLazy);
//            });
//            //启动线程
//            thread.start();
//        }
        //测试加锁后的多线程
        for (int i = 0; i < 10; i++) {
            //创建多个线程并获取实例对象
            Thread thread = new Thread(()->{
                //获取单例对象并打印
                SingletonLazyLock singletonLazy = SingletonLazyLock.getInstance();
                System.out.println(singletonLazy);
            });
            //启动线程
            thread.start();
        }
    }
}
